In the past, memory chips with defective cells will not be sold in the marketplace. However, with the advent of a number of state-of-art techniques, defective memory chip can behave as a defective-free memory chip. And there are a number of patents addressing methods of using partially defective memories as transparently "good" memories. It is well known that defective memory cells can be located by any appropriate testing procedure, such as loading "1" and "0" in each bit location and then verifying the results.
U.S. Pat. No. 4,939,694 to Eaton et. al., describes a self-testing and self-repairing memory system. The memory system tests itself during field use to locate defective memory cells. Once these defective memory cells are located, the memory system uses the error correction code engine to correct these defective memory cells. When the error correction code engine becomes overburdened, then the memory system replaces these defective memory cells.
U.S. Pat. No. 5,644,541, to Siu et. al., describes a memory system comprising a plurality of semiconductor memories with some bad bits, a substitution memory and a mapping logic to redirect accesses to bad-bit locations in the semiconductor memories to good storage cells within the substitution memory.
U.S. Pat. No. 5,278,847, to Helbig, Sr. and Anastasia, describes a fault-tolerating memory system that uses an error-detecting-and correcting (EDAC) code. The reliability of storage is greatly improved by extension of each word to add EDAC encoding and spare-bit portions, as well as by extension of depth to allow spare words to be present, along with high-reliability storage of word maps.
U.S. Pat. No. 5,579,266 to Tahara, handles defective memory by use of laser repair, or programmable fuse repair, and replaces defective memory cells with redundant rows and columns.
Executable machine code are typically generated from the source code of a computer program by the compile and link operations. As the executable machine code is obtained, it is ready to be loaded into memories for program execution. FIG. 1 shows the detailed operations of the compilation, linking and loading operations in accordance with the prior art.
During the first pass compilation 11, the memory-byte allocations for each instruction steps are counted and the relative memory locations of symbols, labels and stack declarations are recorded in a symbol table. In the second pass compilation 13, the object machine code associated with each instruction step and the associated data or address parameters are obtained with proper memory address pointers. The link operation 15 links one or several (already compiled) object code and adds appropriate header to produce the executable machine code. After the program start memory address is determined in block 17, the executable machine code are loaded into programmable memories of a computer, micro-computer, or micro-controller system for program execution.
It is observed that, the error checking and error correcting techniques, or memory re-direct techniques, provided by some of the prior arts inevitably adds overhead to the hardware design and/or program execution each time the executable machine code is executed. On the other hand, the redundant memories, circuits and the defective memory repair work provided by some prior arts also add design and operation complications.